Isogeny calculation device, isogeny calculation method, and computer program product

ABSTRACT

According to one embodiment, an isogeny calculation device includes a memory and an isogeny calculator. The memory stores, as a pre-calculated value, an intermediate value, among a plurality of intermediate values used for isogeny calculation, which is determined from an elliptic point T obtained by repeatedly performing L-point multiplication (where L is a positive integer) and M-isogeny (where M is a positive integer) on an elliptic point S serving as a kernel of the isogeny. The isogeny calculator identifies the elliptic point T serving as the kernel of the M-isogeny according to lower e digits (where e is a positive integer) of an L-adic representation of a secret key sk that determines the elliptic point S, reads the pre-calculated value determined from the elliptic point T from the memory, and performs at least one of calculations of the L-point multiplication and the M-isogeny using the pre-calculated value read from the memory.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is based upon and claims the benefit of priority from Japanese Patent Application No. 2022-106781, filed on Jul. 1, 2022; the entire contents of which are incorporated herein by reference.

FIELD

Embodiments described herein relate generally to an isogeny calculation device, an isogeny calculation method, and a computer program product.

BACKGROUND

In recent years, research on quantum computing has been accelerated by entry of major information technology (IT) companies. If quantum computers are developed that break Rivest-Shamir-Adleman (RSA) cryptosystems and elliptic curve cryptosystems serving as currently widely used public-key cryptosystems, information security systems using the RSA cryptosystems or the elliptic curve cryptosystems will no longer be safe. Therefore, research and development of quantum-resistant cryptosystems (also called quantum-resistant public key cryptosystems or post-quantum cryptosystems) are underway in preparation for the case where the RSA cryptosystems and the elliptic curve cryptosystems are required to be replaced with the quantum-resistant cryptosystems. One of the possible candidates for the quantum-resistant cryptosystems is isogeny-based cryptosystems, the safety of which being based on isogeny problems.

However, the conventional technologies have a difficulty in improving the processing speed of isogeny calculation.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating an example of a supersingular isogeny Diffie-Hellman key exchange (SIDH) key sharing process;

FIG. 2 is a chart illustrating an example of a L{circumflex over ( )}e_L-isogeny calculation algorithm (when L=2);

FIG. 3 is a chart illustrating an example of values represented by variables of the algorithm in FIG. 2 (when e_2=3);

FIG. 4 is a diagram illustrating an example of a tree structure indicating a calculation order of the L{circumflex over ( )}e_L-isogeny calculation (when e_L=7);

FIG. 5 is a chart illustrating an example of pre-calculated values of an embodiment;

FIG. 6 is a diagram illustrating an exemplary functional configuration of an isogeny calculation device of the embodiment;

FIG. 7 is a chart illustrating examples of variations of the pre-calculated values in a public key generation process of the embodiment;

FIG. 8 is a chart illustrating examples of variations of the pre-calculated values in a shared key establishment process of the embodiment; and

FIG. 9 is a diagram illustrating an exemplary hardware configuration of the isogeny calculation device of the embodiment.

DETAILED DESCRIPTION

In general, according to one embodiment, an isogeny calculation device includes a memory and an isogeny calculator. The memory is configured to store, as a pre-calculated value, an intermediate value, among a plurality of intermediate values used for isogeny calculation, which is determined from an elliptic point T obtained by repeatedly performing L-point multiplication (where L is a positive integer) and M-isogeny (where M is a positive integer) on an elliptic point S serving as a kernel of the isogeny. The isogeny calculator is configured to identify the elliptic point T serving as the kernel of the M-isogeny according to lower e digits (where e is a positive integer) of an L-adic representation of a secret key sk that determines the elliptic point S, read the pre-calculated value determined from the elliptic point T from the memory, and perform at least one of calculations of the L-point multiplication and the M-isogeny by using the pre-calculated value read from the memory.

Exemplary embodiments of an isogeny calculation device, an isogeny calculation method, and a computer program product will be explained below in detail with reference to the accompanying drawings. The present invention is not limited to the following embodiments.

Isogeny-based cryptography is quantum-resistant cryptography, the safety of which being based on isogeny problems. For example, the supersingular isogeny key encapsulation (SIKE) is a candidate standardization scheme for the quantum-resistant cryptography by the National Institute of Standards and Technology (NIST). In the isogeny cryptography, scalar multiplication and isogeny calculation are performed (performed by a combination of L-point multiplication and L-isogeny calculation, where L is a positive integer) for an elliptic point on an elliptic curve. Herein, an elliptic point means a point on an elliptic curve.

The isogeny-based cryptography has an advantage that the key size is smaller than that of the quantum-resistant cryptography (lattice-based cryptography and code-based cryptography), but has a disadvantage that the number of execution cycles is larger for key generation, encryption, decryption, key encapsulation, and key decapsulation. Therefore, in order to alleviate the disadvantage, the isogeny calculation device of the embodiment increases the speed of the isogeny calculation that serves as a main process of the isogeny-based cryptography.

In the isogeny-based cryptography, a key sharing scheme is used to configure public-key cryptography and a key encapsulation mechanism (KEM). For example, in the SIKE, supersingular isogeny Diffie-Hellman key exchange (SIDH) is used as the key sharing scheme. The main process of the isogeny-based cryptography algorithm is in the key-sharing scheme. Therefore, an example of a key-sharing process of the SIDH will first be briefly described.

FIG. 1 is a diagram illustrating an example of the SIDH key sharing process.

In the SIDH, a key (hereinafter, called “shared key”) is secretly shared between Alice and Bob. Alice and Bob represent fictional parties (such as information-processing devices) that perform cryptographic communication, and Alice and Bob will be used in the description of the embodiment, according to the customary practice.

The shared key is calculated using an own secret key and a public key (public parameters) of the other party (communicating partner). Let the public parameters be a positive integer L, a positive integer e_L, an elliptic curve E_0, an elliptic point P_L, and an elliptic point Q_L. The elliptic points P_L and Q_L are points having an order L{circumflex over ( )}e_L (L to the power of e_L, where {circumflex over ( )}represents “to the power of”) on the elliptic curve E_0. The secret key space is represented as K_L={0, 1, 2, . . . , L{circumflex over ( )}e_L−1}.

A j-invariant of an elliptic curve E_0/<S_L, S_L′> finally obtained for two positive integers L and L′ is equal between a case where the elliptic curve E_0 is mapped to an elliptic curve E_0/<S_L> by the isogeny determined by an elliptic point S_L and then mapped to the elliptic curve E_0/<S_L, S_L′> by the isogeny determined by an elliptic point S_L′ and a case where the elliptic curve E_0 is mapped to E_0/<S_L′> by the isogeny determined by the elliptic point S_L′ and then mapped to the elliptic curve E_0/<S_L, S_L′> by the isogeny determined by the elliptic point S_L. This j-invariant serves as the shared key. The key sharing scheme includes two steps of public key generation and shared key establishment.

Public Key Generation Step

For example, let L=2 and L′=3. The elliptic curve E_0, an elliptic point P_2, an elliptic point Q_2, an elliptic point P_3, and an elliptic point Q_3 are given by the public parameters.

Alice obtains a random number (secret key) sk_2 from a secret key space K_2, and calculates an elliptic point S_2=P_2+[sk_2]Q_2 determined by the random number sk_2 using the scalar multiplication. [sk]Q denotes the scalar multiplication between a scalar value sk and the elliptic point Q. Alice calculates secret isogeny φ_2{circumflex over ( )}e_2:E_0→E_0/<S_2> having a group <S_2> generated at the elliptic point S_2 as a kernel.

Bob obtains a random number sk_3 from a secret key space K_3, and calculates an elliptic point S_3=P_3+[sk_3]Q_3 determined by the random number sk_3 using the scalar multiplication. Bob calculates secret isogeny φ_3{circumflex over ( )}e_3:E_0→E_0/<S_3> having a group <S_3> generated at the elliptic point S_3 as a kernel.

Alice calculates and publishes public keys pk_2={E_0/<S_2>, φ_2{circumflex over ( )}e_2 (P_3), φ_2{circumflex over ( )}e_2 (Q_3)}, and Bob calculates and publishes public keys pk_3={E_0/<S_3>, φ_3{circumflex over ( )}e_3 (P_2), φ_3{circumflex over ( )}e_3 (Q_2)}.

Shared Key Establishment Step

Alice calculates an elliptic point φ_3{circumflex over ( )}e_3(S_2)=φ_3{circumflex over ( )}e_3(P_2)+[sk_2] φ_3{circumflex over ( )}e_3(Q_2) determined by the random number sk_2 from elliptic points φ_3{circumflex over ( )}e_3(P_2) and φ_3{circumflex over ( )}e_3(Q_2) in the public key pk_3 of Bob and the secret key sk_2 of Alice, using the scalar multiplication. Alice calculates secret isogeny φ′ _2{circumflex over ( )}e_2:E_0/<S_3>→E_0/<S_2, S_3> having a group <φ_3{circumflex over ( )}e_3(S_2)> generated at the elliptic point φ_3{circumflex over ( )}e_3(S_2) as a kernel.

Bob calculates an elliptic point φ_2{circumflex over ( )}e_2(S_3)=φ_2{circumflex over ( )}e_2(P_3)+[sk_3]φ_2{circumflex over ( )}e_2(Q_3) determined by the random number sk_3 from the public keys φ_2{circumflex over ( )}e_2 (P_3) and φ_2{circumflex over ( )}e_2 (Q_3) of Alice and the secret key sk_3 of Bob, using the scalar multiplication. Bob calculates secret isogeny φ′_3{circumflex over ( )}e_3:E_0/<S_2>→E_0/<S_2, S_3> having a group <φ_2{circumflex over ( )}e_2(S_3)> generated at the elliptic point φ_2{circumflex over ( )}e_2(S_3) as a kernel.

Hereafter, at the public key generation step mentioned above, isogen_2(sk_2)→pk_2 denotes the process (public key generation process) to generate the public key of Alice for the secret key of Alice, and isogen_3(sk_3)→pk_3 denotes the process to generate the public key of Bob for the secret key of Bob.

At the shared key establishment step, isoex_2(pk_3, sk_2)→j denotes the process (shared key establishment process) to calculate the shared key (j-invariant) using the public key of Bob and the secret key of Alice, and isoex_3(pk_2, sk_3)→j denotes the process to calculate the shared key using the public key of Alice and the secret key of Bob.

As described above, in the public key generation process isogen_L(sk_L)→pk_L and the shared key establishment process isoex_L(pk_L′, sk_L)→j, the scalar multiplication using a secret key sk_L as a scalar value and the L{circumflex over ( )}e_L-isogeny calculation are performed. The L{circumflex over ( )}e_L-isogeny calculation is a process that occupies a large proportion of the number of execution cycles. While the following description will be made by exemplifying the L{circumflex over ( )}e_L-isogeny calculation in the public key generation process, the same also applies to the L{circumflex over ( )}e_L-isogeny calculation in the shared key establishment process.

In the L{circumflex over ( )}e_L-isogeny calculation, secret isogeny φ_L{circumflex over ( )}e_L:E_0→E_0/<S_L> having the elliptic point S_L determined by the secret key sk_L as a kernel is calculated. The L{circumflex over ( )}e_L-isogeny calculation is performed by combining the L-point multiplication with the L-isogeny calculation.

Specifically, L-isogeny φ_L having an elliptic point [L{circumflex over ( )}(e_L−1)]S_L obtained by performing the L-point multiplication on the elliptic point S_L by (e_L−1) times as a kernel is first calculated.

Then, the L-isogeny φ_L having, as a kernel, an elliptic point [L{circumflex over ( )}(e_L−2)]φ_L(S_L) obtained by performing the L-point multiplication by (e_L−2) times on an elliptic point φ_L(S_L) obtained by mapping the elliptic point S_L by the L-isogeny is calculated. In the same way, the L-isogeny φ_L having, as a kernel, an elliptic point [L{circumflex over ( )}(e_L−3)]φ_L{circumflex over ( )}2(S_L) obtained by performing the L-point multiplication by (e_L−3) times on an elliptic point φ_L{circumflex over ( )}2(S_L) obtained by mapping the elliptic point φ_L(S_L) by the L-isogeny is calculated. By repeating such operations a total of e_L times, public keys pk_L={E_0/<S_L>, φ_L{circumflex over ( )}e_L(P_L′), φ_L{circumflex over ( )}e_L(Q_L′)} are obtained.

FIG. 2 is a chart illustrating an example of a L{circumflex over ( )}e_L-isogeny calculation algorithm (when L=2). FIG. 3 is a chart illustrating an example of values represented by variables of the algorithm in FIG. 2 (when e_2=3). As illustrated in the examples in FIGS. 2 and 3 , 2{circumflex over ( )}3-isogeny calculation is performed by combining point doubling with 2-isogeny calculation.

In the L{circumflex over ( )}e_L-isogeny calculation, it is essential to calculate the e_L kernel elliptic points [L{circumflex over ( )}(e_L−1)]S_L, [L{circumflex over ( )}(e_L−2)]φ_L(S_L), [L{circumflex over ( )}(e_L−3)] φ_L{circumflex over ( )}2(S_L), . . . , φ_L{circumflex over ( )}(e_L−1) (S_L), and the order of the calculation is not limited to that of the algorithm in FIG. 2 mentioned above. For example, it is known that letting the left-hand side denote the L-point multiplication and the right-hand side denote the L-isogeny calculation, the isogeny calculation is performed in the calculation order based on a tree structure with the kernel elliptic points serving as leaves (Supersingular Isogeny Key Encapsulation, online, searched on May 11, 2022, Internet <URL: https://csrc.nist.gov/CSRC/media/Projects/post-quantum-cryptography/documents/round-3/submissions/SIKE-Round3.zip>; hereinafter referred to as “Non-Patent Literature 1”).

FIG. 4 is a diagram illustrating an example of the tree structure indicating the calculation order of the L{circumflex over ( )}e_L-isogeny calculation (when e_L=7). A point that moves in a lower-left direction in the tree structure represents an elliptic point obtained by performing the L-point multiplication. A point that moves in a lower-right direction in the tree structure represents an elliptic point obtained by calculating the L-isogeny.

The leaves of the tree structure (in the example in FIG. 4 , points in a portion 101 included in the tree structure) represent the elliptic points used as the kernels in the calculation process of the points (P and Q) mapped by isogeny. The points in a portion 102 included in the tree structure represent the elliptic points obtained by calculating the L-isogeny.

A sequence of positive integers representing a tree structure, for example, (3, 2, 1, 1, 2, 1) at e_L=7, is called a strategy. The strategy specifies the tree structure that represents the elliptic points (hereafter, “intermediate values”) used in the L{circumflex over ( )}e_L-isogeny calculation.

Improvements to the L{circumflex over ( )}e_L-isogeny calculation known so far include a contrivance for the tree structure (method for enabling batch processing, by U.S. Pat. No. 10,812,265) and a contrivance for the intermediate values (method for saving a memory by sharing Z-coordinates of a plurality of intermediate values, by U.S. Pat. No. 11,032,074).

The embodiment is an embodiment related to a technology for implementation of the isogeny-based cryptography processing. The following describes the embodiment to increase the speed of the L{circumflex over ( )}e_L-isogeny calculation by performing pre calculation.

Using the fact that the elliptic points P_L and Q_L serving as the public parameters are known, the isogeny calculation device of the embodiment pre-calculates elliptic points [L{circumflex over ( )}(e_L−1)]S_L, [L{circumflex over ( )}(e_L−2)]φ_L(S_L), [L{circumflex over ( )}(e_L−3)]φ_L{circumflex over ( )}2(S_L), . . . , [L{circumflex over ( )}(e_L−e)]φ_L{circumflex over ( )}(e−1) (S_L) among the kernel e_L elliptic points [L{circumflex over ( )}(e_L−1)]S_L, [L{circumflex over ( )}(e_L−2)]φ_L(S_L), [L{circumflex over ( )}(e_L−3)]φ_L{circumflex over ( )}2(S_L), . . . , φ_L{circumflex over ( )}(e_L−1) (S_L) of the L-isogeny, as a smaller positive integer e<e_L. The isogeny calculation device of the embodiment reduces the number of calculations of the L-point multiplication and the L-isogeny in the L{circumflex over ( )}e_L-isogeny calculation by reading the pre-calculated values.

L{circumflex over ( )}e_L-Isogeny Calculation

Assume that the tree structure is given as the strategy. The elliptic point S_L=P_L+[sk_L]Q_L corresponds to a root of the tree structure. The secret key sk_L determines the elliptic point S_L. The elliptic point S_L is a point having the order L{circumflex over ( )}e_L on the elliptic curve E_0. The elliptic point S_L can take L{circumflex over ( )}e_L values from the secret key space K_L={0, 1, 2, . . . , L{circumflex over ( )}e_L−1}.

The elliptic point [L{circumflex over ( )}(e_L−1)]S_L corresponds to the leftmost leaf of the tree structure. Since the order of the elliptic point S_L is L{circumflex over ( )}e_L, the order of the elliptic point [L{circumflex over ( )}(e_L−1)]S_L is L. When trunc(sk_L, e) denotes truncated lower e digits of a cardinal number L of sk_L, Expression (1) below holds.

$\begin{matrix} {{{\left. {{\left\lbrack {L^{\land}\left( {{e\_ L} - 1} \right)} \right\rbrack{S\_ L}}{= {L^{\land}\left( {{e\_ L} - 1} \right)}}} \right\rbrack{P\_ L}} + {{\left\lbrack {L^{\land}\left( {{e\_ L} - 1} \right)} \right\rbrack\lbrack{sk\_ L}\rbrack}{Q\_ L}}}{= {\left\lbrack {L^{\land}\left( {{e\_ L} - 1} \right)} \right\rbrack{P\_ L}}}{{+ {\left\lbrack {{trunc}\left( {{sk\_ L},1} \right)} \right\rbrack\left\lbrack {L^{\land}\left( {{e\_ L} - 1} \right)} \right\rbrack}}{Q\_ L}}} & (1) \end{matrix}$

From Expression (1) above, the lower one digit of the secret key sk_L determines the elliptic point [L{circumflex over ( )}(e_L−1)]S_L.

The elliptic point [L{circumflex over ( )}(e_L−2)]φ_L(S_L) corresponds to the second leftmost leaf, and the order is L. Expression (2) below holds.

$\begin{matrix} \left. {\left. {{\left\lbrack {L^{\land}\left( {{e\_ L} - 2} \right)} \right\rbrack{\varphi\_ L}({s\_ l})}{= {\left\lbrack {L^{\land}\left( {{e\_ L} - 2} \right)} \right\rbrack{\varphi\_ L}({P\_ L})}}{{+ \left\lbrack {L^{\land}\left( {{e\_ L} - 2} \right)} \right\rbrack}{{\varphi\_ L}\lbrack{sk\_ L}\rbrack}{Q\_ L}}} \right){= {{\varphi\_ L}\left( {\left\lbrack {L^{\land}\left( {{e\_ L} - 2} \right)} \right\rbrack\ {P\_ L}} \right)}}{+ \left\lbrack {{{trunc}\left( {{sk\_ L},2} \right)}{{\varphi\_ L}\left\lbrack {L^{\land}\left( {{e\_ L} - 2} \right)} \right\rbrack}{Q\_ L}} \right.}} \right) & (2) \end{matrix}$

From Expression (2) above, the lower two digits of the secret key sk_L determines the elliptic point [L{circumflex over ( )}(e_L−2)]φ_L(S_L).

In the same way, an elliptic point [L{circumflex over ( )}(e_L−e)]φ_L{circumflex over ( )}(e−1) (S_L) corresponds to the e-th leftmost leaf, and the order of this elliptic point is L, which is determined by the lower e digits of the secret key sk_L.

For example, when L=2, an elliptic point [2{circumflex over ( )}(e_2−1)]S_2 can take two values of [2{circumflex over ( )}(e_2−1)]P_2+[0] [2{circumflex over ( )}(e_2−1)]Q_2 and [2{circumflex over ( )}(e_2−1)P_2+[1] [2{circumflex over ( )}(e_2−1)]Q_2.

An elliptic point [2{circumflex over ( )}(e_2-2)]φ_2(S_2) can take four values. Specifically, the value of the first point is φ_2([2{circumflex over ( )}(e_2−2)]P_2)+[00]2φ_2([2{circumflex over ( )}(e_2−2)]Q_2). In this expression, [00]_2 represents scalar multiplication using the lower two digits of the binary representation of the secret key sk_2, and the same applies below. The value of the second point is φ_2([2{circumflex over ( )}(e_2−2)]P_2)+[10] _2φ_2([2{circumflex over ( )}(e_2−2)]Q_2). The 2-isogeny of these two points (φ_0 in FIG. 5 to be explained below) has a kernel at [2{circumflex over ( )}(e_2−1)]P_2+[0][2{circumflex over ( )}(e_2−1)]Q_2.

The value of the third point is φ_2([2{circumflex over ( )}(e_2−2)]P_2)+[01]_2φ_2([2{circumflex over ( )}(e_2−2)]Q_2). The value of the fourth point is φ_2([2{circumflex over ( )}(e_2−2)]P_2)+[11]_2φ_2([2{circumflex over ( )}(e_2−2)]Q_2). The 2-isogeny of these two points (φ_1 in FIG. 5 to be explained below) has a kernel at [2{circumflex over ( )}(e_2−1)]P_2+[1][2{circumflex over ( )}(e_2−1)]Q_2.

In the implementation, the elliptic points determined by the lower e digits of the secret key sk_L are held as the pre-calculated values, as described above. If the memory for storing the pre-calculated values is limited, the elliptic points to be held as the pre-calculated values may be determined, for example, based on the number of patterns of values that can be taken among those of elliptic points (elliptic points T serving as the kernels of the L-isogeny) that can be represented by leaves of the tree structure.

FIG. 5 is a chart illustrating an example of the pre-calculated values of the embodiment. The example in FIG. 5 illustrates an example of elliptic points determined by the lower three digits of the secret key sk_2. The locations in FIG. 5 have nothing to do with the arrangement in the memory. In the case of 128-bit security, the elliptic point has 434*2*2 bits (approximately 220 bytes).

Example of Functional Configuration FIG. 6 is a diagram illustrating an exemplary functional configuration of the isogeny calculation device of the embodiment. An isogeny calculation device 100 of the embodiment includes a sampler 1, a scalar multiplier 2, and an isogeny calculator 3. The isogeny calculator 3 includes a controller 31, an L-point multiplier 32, and an L-isogeny calculator 33.

The sampler 1 obtains the secret key sk from the secret key space K included in system parameters, and supplies the secret key sk to the scalar multiplier 2. The sampler 1 also supplies the lower e digits of the secret key sk to the controller 31.

The scalar multiplier 2 performs the scalar multiplication to calculate the elliptic point S using the secret key sk received from the sampler 1 and the elliptic points P and Q included in the system parameters, and supplies the result to the isogeny calculator 3.

The isogeny calculator 3 performs the L{circumflex over ( )}e_L-isogeny calculation.

The controller 31 controls the operations of the L-point multiplier 32 and the L-isogeny calculator 33 based on the positive integer e<e_L, the tree structure given as the strategy (refer to FIG. 4 ), pre-calculated values T (values that can be taken by the elliptic points [L{circumflex over ( )}(e_L−1)]S_L, [L{circumflex over ( )}(e_L−2)]φ_L(S_L), [L{circumflex over ( )}(e_L−3)]φ _L{circumflex over ( )}2(S_L), . . . , [L{circumflex over ( )}(e_L−e)]φ_L{circumflex over ( )}(e−1) (S_L), refer to FIG. 5 , for example), and the lower digits of the secret key (the lower e digits of the secret key sk) received from the sampler 1. Thus, the controller 31 performs the L-point multiplication and the L-isogeny calculation in the L{circumflex over ( )}e_L-isogeny calculation. The elliptic points [L{circumflex over ( )}(e_L−1)]S_L, [L{circumflex over ( )}(e_L−2)] φ_L(S_L), [L{circumflex over ( )}(e_L−3)]φ_L{circumflex over ( )}2(S_L), . . . , [L{circumflex over ( )}(e_L−e)]φ_L{circumflex over ( )}(e−1) (S_L) are obtained by performing the L-point multiplication and the L-isogeny calculation a total of (e_L−1) times on the elliptic point S_L. The elliptic point [L{circumflex over ( )}(e_L−e)]φ_L{circumflex over ( )}(e−1) (S_L) is obtained by performing the L-point multiplication by (e_L−e) times and the L-isogeny calculation on the elliptic point S_L.

The controller 31 controls the operations of the L-point multiplier 32 and the L-isogeny calculator 33 according to Algorithm A (FIG. 2 ), for example. At this time, if each of the pre-calculated values T is available (in the iteration from i=e_L−1 to i=e_L−e in FIG. 2 ), the controller 31 reads the pre-calculated value T determined by trunc(sk_L, e_L−i) as an elliptic point T serving as the kernel, and supplies the pre-calculated value T to the L-point multiplier 32, without performing the L-point multiplication (Process Step 3 in FIG. 2 ).

Upon receiving the elliptic point S_L from the scalar multiplier 2, the L-point multiplier 32 calculates the elliptic point T by performing the L-point multiplication of the elliptic point S_L, and supplies the elliptic point T to the L-isogeny calculator 33. If the pre-calculated value T is available (in the iteration from i=e_L−1 to i=e_L−e), the L-point multiplier 32 supplies the pre-calculated value T read by the controller 31 to the L-isogeny calculator 33 without performing the L-point multiplication.

The L-isogeny calculator 33 performs the L-isogeny calculation using the elliptic curve E, elliptic points S, P′, and Q′, and the elliptic point T received from the L-point multiplier 32 (Process Steps 4 to 6 in FIG. 2 ).

If the pre-calculated value T is not available (in the iteration from i=e_L−e−1 to i=0 in FIG. 2 ), the controller 31 performs the calculation of each process step in FIG. 2 by operating the L-point multiplier 32 and the L-isogeny calculator 33 as usual.

The following describes Variations 1 to 4 of the pre-calculated value held by the isogeny calculation device 100. The above has been described by exemplifying the case where the pre-calculated values are the values that can be taken by the elliptic points T ([L{circumflex over ( )}(e_L−1)]S_L, [L{circumflex over ( )}(e_L−2)]φ_L(S_L), [L{circumflex over ( )}(e_L−3)]φ_L{circumflex over ( )}2(S_L), . . . , [L{circumflex over ( )}(e_L−e)] φ_L{circumflex over ( )}(e−1) (S_L), refer to FIG. 5 , for example). However, the pre-calculated values are not limited to the values that can be taken by these elliptic points T, but may also be intermediate values determined from the elliptic points T obtained by repeatedly performing the L-point multiplication (where L is a positive integer) and M-isogeny (where M is a positive integer) on the elliptic points S serving as kernels of the isogeny, among a plurality of intermediate values used for the isogeny calculation.

The pre-calculated values of the embodiment may be read from a storage device in the isogeny calculation device 100 (for example, a memory of the isogeny calculation device 100) or a storage device outside the isogeny calculation device 100 (for example, a server device).

Variation 1

In the example of Variation 1, the isogeny calculation device 100 pre-calculates (holds as the pre-calculated value) not only the elliptic point T at Process Step 3, but also the elliptic point used at Process Step 6 (elliptic point obtained by mapping the public parameters by L{circumflex over ( )}e-isogeny) in Algorithm A in FIG. 2 . That is, the isogeny calculation device 100 holds the elliptic point obtained by mapping a public elliptic point by the L{circumflex over ( )}e-isogeny as an intermediate value determined from the elliptic point T.

The controller 31 does not cause the L-isogeny calculator 33 to perform the calculation at Process Step 6 in the iteration from i=e_L−1 to i=e_L−e+1 in FIG. 2 . Then, at Process Step 6 in the iteration i=e_L−e in FIG. 2 , the controller 31 reads the pre-calculated value indicating the elliptic point determined by trunc(sk_L, e) obtained by the mapping by the L{circumflex over ( )}e-isogeny, and uses the read pre-calculated value as the calculation result at Process Step 6.

Variation 1 reduces the number of times of the L-isogeny calculation by e times per one elliptic point of the public parameters, thus, being capable of further increasing the speed of the L{circumflex over ( )}e_L-isogeny calculation.

Variation 2

In the example of Variation 2, the isogeny calculation device 100 pre-calculates (holds as the pre-calculated value) not only the elliptic point T at Process Step 3 in FIG. 2 , but also an intermediate value AC corresponding to a coefficient of the elliptic curve at Process Step 4.

The controller 31 does not cause the L-isogeny calculator 33 to perform the calculation at Process Step 4 in the iteration from i=e_L−1 to i=e_L−e in FIG. 2 . The controller 31 reads the pre-calculated value indicating the intermediate value AC corresponding to the coefficient of the elliptic curve determined by trunc(sk_L, e_L−i), and uses the read pre-calculated value as the calculation result at Process Step 4.

Variation 2 reduces the number of times of the calculation for the intermediate value AC corresponding to the coefficient of the elliptic curve by e times, thus, being capable of further increasing the speed of the L{circumflex over ( )}e_L-isogeny calculation.

Variation 3

Variation 3 will be described later with reference to FIG. 7 .

Variation 4

Process Step 4 in FIG. 2 is outlined as the calculation of the coefficient of the elliptic curve. In reality, however, an intermediate value K to be used in the L{circumflex over ( )}e_L-isogeny calculation at Process Steps 5 and 6 and the intermediate value AC to be used in the calculation of the L-point multiplication at Process Step 3 in the next iteration are calculated from the elliptic point T at Process Step 4.

In the example of Variation 4, the isogeny calculation device 100 pre-calculates (holds as the pre-calculated values) the intermediate value K and the intermediate value AC instead of the elliptic point T. That is, the isogeny calculator 3 is allowed to store the intermediate value K to be used in the calculation of the L-isogeny as the pre-calculated value determined from the elliptic point T and calculate the L-isogeny using the intermediate value K. The isogeny calculator 3 is also allowed to store the intermediate value AC to be used in the calculation of the L-point multiplication as the pre-calculated value determined from the elliptic point T and calculate the L-point multiplication using the intermediate value AC. The intermediate value AC corresponds to the coefficient of the elliptic curve mapped by mapping a public elliptic curve including the elliptic point S by the isogeny.

The controller 31 does not cause the L-isogeny calculator 33 to calculate the intermediate value K at Process Step 4 in the iteration from i=e_L−1 to i=e_L−e in FIG. 2 . The controller 31 reads the pre-calculated value indicating the intermediate value K determined by trunc(sk_L, e_L−i), and uses the intermediate value K as the calculation result at Process Step 4.

The controller 31 does not cause the L-isogeny calculator 33 to calculate the intermediate value AC at Process Step 4 in the iteration from i=e_L−1 to i=e_L−e+1 in FIG. 2 . The controller 31 reads the pre-calculated value indicating the intermediate value AC determined by trunc(sk_L, e) at Process Step 4 in the iteration i=e_L−e in FIG. 2 , and uses the intermediate value AC as the calculation result at Process Step 4.

Variation 4 reduces the amount of calculation of the intermediate values K and AC, thus, being capable of further increasing the speed of the L{circumflex over ( )}e_L-isogeny calculation.

FIG. 7 summarizes Variations 1 to 4 described above.

FIG. 7 is a chart illustrating the examples of the variations of the pre-calculated values of the embodiment. The example number 0 illustrates the pre-calculated value of the embodiment described above. The example number 1 illustrates Variation 1 of the pre-calculated values of the embodiment described above. The example number 2 illustrates Variation 2 of the pre-calculated values of the embodiment described above. The example number 3 illustrates Variation 3 of the pre-calculated values of the embodiment. The example number 4 illustrates Variation 4 of the pre-calculated values of the embodiment described above.

The examples number 1 to number 4 in FIG. 7 may be applied any strategy, not only to the strategy by Algorithm A in FIG. 2 . For example, a strategy indicating a tree structure that determines the order of calculation of the L-point multiplication and the L-isogeny calculation and the number of calculations of the L-point multiplication and the L-isogeny may be received, and may perform the L-isogeny calculation and the L-point multiplication calculation based on the strategy. However, in the example number 4, the L{circumflex over ( )}e_L-isogeny may not be calculated correctly depending on the combination of the strategy with the positive integer e because interim values of the intermediate values AC are not held. In order to avoid the incapability of correct calculation, only values required for the calculation may be read from among the interim values of the intermediate values AC in the example number 4, in the same way as in the example number 3. When the example number 4 is applied, a combination between a strategy and a positive integer e that may lead to incorrect calculation may be avoided to be used.

In the SIKE, for a higher efficiency, the x-coordinates of P_L, Q_L, R_L=P_L−Q_L are used instead of {P_L, Q_L}. The x-coordinates of φ_L{circumflex over ( )}e(P_L′), φ_L{circumflex over ( )}e(Q_L′), and φ_L{circumflex over ( )}e(R_L′) may be used in the same way for the pre-calculated values in the L{circumflex over ( )}e-isogeny of the public parameters.

The intermediate value K is not limited to a single value, but may be a set of a plurality of values. In the same way, the intermediate value AC is not limited to a single value, but may be a set of a plurality of values. The intermediate value K may not be calculated depending on the positive integer L.

Examples of Intermediate Values K and AC

The following illustrates specific examples of using algorithms in Non-Patent Literature 1 for the intermediate values K and AC. When L=2, the calculation at Process Step 4 of Algorithm A may be performed using Algorithm 11 of Non-Patent Literature 1. The calculations at Process Steps 5 and 6 may be performed using Algorithm 12 of Non-Patent Literature 1. In Algorithm 11 of Non-Patent Literature 1, a set of two values (A_24{circumflex over ( )}+, C_24) is calculated as the intermediate values AC instead of coefficients A and C of the curve. In Algorithm 11, A_24{circumflex over ( )}+:C_24=(A+2C):4C. The values (A_24{circumflex over ( )}+, C_24) are used to calculate the point doubling.

Another example is a method of calculating a set of two values (A_24{circumflex over ( )}−, C_24) as the intermediate values AC. In this method, A_24{circumflex over ( )}−:C_24=(A−2C):4C. The values (A_24{circumflex over ( )}−, C_24) are used to calculate the point doubling. Algorithm 12 of Non-Patent Literature 1 does not use the intermediate value K.

When L=4, the calculation at Process Step 4 of Algorithm A may be performed using Algorithm 13 of Non-Patent Literature 1, and the calculations at Process Steps 5 and 6 may be performed using Algorithm 14 of Non-Patent Literature 1. In Algorithm 13 of Non-Patent Literature 1, a set of two values (A_24{circumflex over ( )}+, C_24) is calculated as the intermediate values AC instead of the coefficients A and C of the curve.

Still another example is a method of calculating a set of two values (A_24{circumflex over ( )}−, C_24) as the intermediate values AC. In Algorithm 14 of Non-Patent Literature 1, a set of three values (K_1, K_2, K_3) is used as the intermediate values K. Therefore, (K_1, K_2, K_3) are calculated as the intermediate values K in Algorithm 13 of Non-Patent Literature 1. When the elliptic point T is a kernel, K_1=4Z_T{circumflex over ( )}2, K_2=X_T−Z_T, and K_3=X_T+Z_T. X_T denotes the X-coordinate in the projective coordinates of the elliptic point T, and Z_T denotes the Z-coordinate in the projective coordinates of the elliptic point T.

When L=3, the calculation at Step 4 of Algorithm A may be performed using Algorithm 15 of Non-Patent Literature 1, and the calculations at Process Steps 5 and 6 may be performed using Algorithm 16 of Non-Patent Literature 1. In Algorithm 15 of Non-Patent Literature 1, a set of two values (A_24{circumflex over ( )}+, A_24{circumflex over ( )}−) is calculated as the intermediate values AC instead of the coefficients A and C of the curve. In Algorithm 15, A_24{circumflex over ( )}+:A_24{circumflex over ( )}−=(A+2C):(A−4C). The vales (A_24{circumflex over ( )}+, A_24{circumflex over ( )}−) are used to calculate point tripling. In Algorithm 16 of Non-Patent Literature 1, a set of two values (K_1, K_2) is used as the intermediate values K. Therefore, (K_1, K_2) are calculated as the intermediate values K in Algorithm 15 of Non-Patent Literature 1. When the elliptic point T is a kernel, K_1=X_T−Z_T, and K_2=X_T+Z_T.

Public Key Generation Process

The isogeny calculation device 100 of the embodiment performs the public key generation process using the pre-calculated values illustrated in FIG. 7 for the public key generation process.

The sampler 1 supplies the secret key sk_L to the scalar multiplier 2. The scalar multiplier 2 supplies the elliptic point S_L calculated from the secret key sk_L by performing the scalar multiplication to the isogeny calculator 3, and the isogeny calculator 3 outputs the public keys pk_L={E_0/<S_L>, φ_L{circumflex over ( )}e_L(P_L′), φ_L{circumflex over ( )}e_L(Q_L′)} The public parameters are {E_0, P_L, Q_L, P_L′, Q_L′}. <S_L> is determined by the scalar multiplication S_L=P_L+[sk_L]Q_L, and φ_L{circumflex over ( )}e_L is determined by the L{circumflex over ( )}e_L-isogeny calculation.

Since the pre-calculated values illustrated in FIG. 7 are used for the L{circumflex over ( )}e_L-isogeny calculation processing that accounts for a large percentage of the number of execution cycles, the processing speed of the isogeny calculation in the public key generation process can be improved.

The sampler 1 may sample the secret key sk_L as a random number sk_L from the key space K_L, or may receive the secret key sk_L as input from outside.

Shared Key Establishment Process

The isogeny calculation device 100 of the embodiment also performs the shared key establishment process using the pre-calculated values illustrated in FIG. 8 to be explained below for the shared key establishment process.

The isogeny calculator 3 receives the input of the secret key sk_L and a public key pk_L′={E_0/<S_L′>, φ_L′{circumflex over ( )}e_L′(P_L), φ_L′{circumflex over ( )}e_L′(Q_L)}, and outputs the shared key j (j-invariant). Specifically, the shared key establishment process includes a process to calculate scalar multiplication φ_L′{circumflex over ( )}e_L′ (S_L)=φ_L′{circumflex over ( )}e_L′ (P_L)+[sk_L]φ_L′{circumflex over ( )}e_L′(Q_L), a process to calculate the L{circumflex over ( )}e_L-isogeny φ′_L{circumflex over ( )}e_L, and a process to calculate the j-invariant.

In the public key generation process, the elliptic points obtained by performing the L-point multiplication and the L-isogeny mapping on the public parameters are set as the pre-calculated values. However, in the shared key establishment process, the elliptic points obtained by performing the L-point multiplication and the L-isogeny mapping on the public key are set as the pre-calculated values. Since the shared key establishment process does not output the public key, the mapping of the public parameters by the L{circumflex over ( )}e-isogeny is not required.

FIG. 8 is a chart illustrating examples of the variations of the pre-calculated values in the shared key establishment process of the embodiment. The example number 0′ illustrates the pre-calculated value of the embodiment described above. The example number 2′ illustrates Variation 2′ of the pre-calculated values of the embodiment described above. The example number 3′ illustrates Variation 3′ of the pre-calculated values of the embodiment described above. The example number 4′ illustrates Variation 4′ of the pre-calculated values of the embodiment described above.

The reason why FIG. 8 includes no example number 1′ is that the example number 1′ is the same as the example number 0′. The examples number 2′ to number 4′ in FIG. 8 may be applied to any strategy. However, in the example number 4′, the calculation may not be performed correctly depending on the combination of the strategy with the positive integer e because interim values of the intermediate values AC are not held. In order to avoid the incapability of correct calculation, only values required for the calculation may be read from among the interim values of the intermediate values AC in the example number 4′, in the same way as in the example number 3′. When the example number 4′ is applied, a combination between a strategy and a positive integer e that may lead to incorrect calculation may be avoided to be used.

Processes for Encryption, Decryption, Key Encapsulation, and Key Decapsulation

The isogeny calculation device 100 of the embodiment may perform the encryption and decryption processes in the isogeny-based cryptography and the key encapsulation and decapsulation processes in the KEM by performing the L{circumflex over ( )}e_L-isogeny calculation that reads the pre-calculated values, and using the public key generation process and the shared key establishment process. The isogeny calculation device 100 of the embodiment may also perform other cryptography algorithm processes using the L{circumflex over ( )}e_L-isogeny calculation that reads the pre-calculated values.

Variations of Calculation Method

The isogeny calculator 3 of the embodiment may perform, for example, the L{circumflex over ( )}e_L-isogeny calculation, the public key generation process, and the shared key establishment process using a method other than the repetition of the combination of the L-point multiplication and the L-isogeny. For example, the isogeny calculator 3 of the embodiment may use a method of repeatedly performing a combination of the L-point multiplication (where L is a positive integer) and the M-isogeny (where M is a positive integer).

Specifically, for example, the memory of the isogeny calculation device 100 of the embodiment may store, as a pre-calculated value, an intermediate value among the intermediate values used for the isogeny calculation that is determined from the elliptic point T obtained by repeatedly performing the L-point multiplication (where L is a positive integer) and the M-isogeny (where M is a positive integer) on the elliptic point S serving as a kernel of the isogeny. Then, after the isogeny calculator 3 receives the input of the elliptic point S and the lower e digits of an L-adic representation of the secret key sk, the isogeny calculator 3 may calculate the M-isogeny of the elliptic point S using the pre-calculated value determined from the elliptic point T identified by the lower e digits of the L-adic representation of the secret key sk, and calculate an intermediate value or a j-invariant determined from an elliptic curve mapped by mapping a public elliptic curve including the elliptic point S by the isogeny based on the M-isogeny of the elliptic point S.

The isogeny calculator 3 may calculate the M-isogeny of the public elliptic point on the public elliptic curve including the elliptic point S using the pre-calculated value read from the memory, and calculate the elliptic point mapped by mapping the public elliptic point by the isogeny based on the M-isogeny of the public elliptic point. For example, the pre-calculated value includes the elliptic point obtained by mapping the public elliptic point by the L{circumflex over ( )}e-isogeny. The isogeny calculator 3 identifies the elliptic point T serving as a kernel of the M-isogeny according to the lower e digits of the L-adic representation of the secret key sk, and reads the elliptic point obtained by mapping the public elliptic point by the L{circumflex over ( )}e-isogeny, as the intermediate value determined from the elliptic point T.

The isogeny calculator 3 may receive a strategy indicating a tree structure that determines the order of calculation of the L-point multiplication and the M-isogeny calculation and the number of calculations of the L-point multiplication and the M-isogeny, and may perform at least one of the M-isogeny calculation and the L-point multiplication calculation based on the strategy.

For example, the isogeny is the L{circumflex over ( )}e_L-isogeny (where e_L is a positive integer), and M=L{circumflex over ( )}m (where m is a positive integer). In this case, for example, the elliptic point T mentioned above is a value that can be taken by performing (e_L−1) times the L-point multiplication and the M-isogeny mapping (which corresponds to m times the L-isogeny, in terms of the number of times of execution) on the elliptic point S mentioned above. For example, the elliptic point T mentioned above is a value that can be taken by performing the L-point multiplication by (e_L−e) times and the M-isogeny mapping, on the elliptic point S mentioned above.

The isogeny calculation device 100 of the embodiment may also change the method of calculating the L{circumflex over ( )}e_L-isogeny depending on the positive integer e_L. For example, when the positive integer e_L is an even number, the L{circumflex over ( )}e_L-isogeny may be calculated using a method other than the repetition of the combination of the L-point multiplication and the L-isogeny.

For example, when the positive integer e_L is an even number, the L{circumflex over ( )}e_L-isogeny may be calculated by repeating a combination of performing L{circumflex over ( )}2-point multiplication once and performing the L-isogeny mapping twice. For example, when the positive integer e_L is an even number, the L{circumflex over ( )}e_L-isogeny may also be calculated by repeating a combination of performing the L-point multiplication twice and performing the M (=L{circumflex over ( )}2)-isogeny mapping once.

Specifically, when L=2, the calculation of L{circumflex over ( )}e_2-isogeny may be performed by repeating a combination of performing the point doubling twice and performing 4-isogeny once. The calculation of the L{circumflex over ( )}e_2-isogeny may be performed by changing the combination for each iteration.

In the same way, when the positive integer e_L is a multiple of 3, the L{circumflex over ( )}e_L-isogeny may be calculated not only by combining the L-point multiplication with the L-isogeny, but also by combining together L{circumflex over ( )}3-point multiplication, the L{circumflex over ( )}2-point multiplication, L{circumflex over ( )}3-isogeny, and L{circumflex over ( )}2-isogeny.

When the positive integer e_L is an odd number, the L{circumflex over ( )}e_L-isogeny may be calculated by combining together the L{circumflex over ( )}2-point multiplication, the L-point multiplication, the L{circumflex over ( )}2-isogeny, and the L-isogeny.

Using the L{circumflex over ( )}2-isogeny reduces the number of the pre-calculated values for the same e, and requires smaller memory size. When the positive integer e is an even number, setting the pre-calculated values to values that can be taken by elliptic points L{circumflex over ( )}(e_L−2)]S_L, [L{circumflex over ( )}(e_L−4)]φ_L{circumflex over ( )}2(S_L), . . . , [L{circumflex over ( )}(e_L−e)]φ_L{circumflex over ( )}2(e/2−1) (S_L) is better than setting the pre-calculated values to values that can be taken by the elliptic points [L{circumflex over ( )}(e_L−1)]S_L, [L{circumflex over ( )}(e_L−2)]φ_L(S_L), [L{circumflex over ( )}(e_L−3)] φ_L{circumflex over ( )}2(S_L), . . . , [L{circumflex over ( )}(e_L−e)] φ_L{circumflex over ( )}(e−1) (S_L) from the viewpoint of the memory size.

For example, when e=4, L{circumflex over ( )}2 kinds of elliptic points [L{circumflex over ( )}(e_L−2)]S_L and L{circumflex over ( )}4 kinds of elliptic points [L{circumflex over ( )}(e_L−4)]φ_L{circumflex over ( )}2(S_L)=[L{circumflex over ( )}(e_L−e)]φ_L{circumflex over ( )}2(e/2−1) (S_L) only need to be held instead of holding L kinds of elliptic points [L{circumflex over ( )}(e_L−1)]S_L, L{circumflex over ( )}2 kinds of elliptic points [L{circumflex over ( )}(e_L−2)]φ_L(S_L), L{circumflex over ( )}3 kinds of elliptic points [L{circumflex over ( )}(e_L−3)]φ_L{circumflex over ( )}2(S_L), and L{circumflex over ( )}e=L{circumflex over ( )}4 kinds of elliptic points [L{circumflex over ( )}(e_L−e)]φ_L{circumflex over ( )}(e−1) (S_L).

As a result, the number of the pre-calculated values decreases by the number of the L kinds of the elliptic points [L{circumflex over ( )}(e_L−1)]S_L and the L{circumflex over ( )}3 kinds of elliptic points [L{circumflex over ( )}(e_L−3)]φ_L{circumflex over ( )}2(S_L). In the same way, when the positive integer e is an odd number, using the L{circumflex over ( )}2-isogeny and the L-isogeny reduces the number of the pre-calculated values. The number of the pre-calculated values can be reduced not only when the elliptic points T are used to set the precalculated values, but also when the coefficients of the elliptic curve and the intermediate values K and AC are used as precalculated values.

As described above, in the isogeny calculation device 100 of the embodiment, the memory stores, as the pre-calculated value, the intermediate value among the intermediate values used for the isogeny calculation that is determined from the elliptic point T obtained by repeatedly performing the L-point multiplication (where L is a positive integer) and the M-isogeny (where M is a positive integer) on the elliptic point S serving as a kernel of the isogeny. Then, the isogeny calculator 3 identifies the elliptic point T serving as the kernel of the M-isogeny according to the lower e digits (where e is a positive integer) of the L-adic representation of the secret key sk that determines the elliptic point S, reads the pre-calculated value determined from the elliptic point T from the memory, and calculates at least one of the L-point multiplication and the M-isogeny using the pre-calculated value read from the memory.

The isogeny calculation device 100 of the embodiment can improve the processing speed of the isogeny calculation. Specifically, since the number of calculations of the L-point multiplication and the L-isogeny in the L{circumflex over ( )}e_L-isogeny calculation can be reduced, the L{circumflex over ( )}e_L-isogeny calculation can be quickened. This feature can reduce the number of execution cycles of the public key generation and the shared key establishment in the key sharing scheme, the safety of which being based on the isogeny problems. The feature can also reduce the number of execution cycles of the key generation, the encryption, the decryption, the key encapsulation, and the key decapsulation in the isogeny-based cryptography and the KEM that are configured using the key sharing scheme.

The following finally describes an example of hardware configuration of the isogeny calculation device 100 of the embodiment. The isogeny calculation device 100 of the embodiment can be implemented, for example, using any computer device as basic hardware.

Example of Hardware Configuration

FIG. 9 is a diagram illustrating the example of the hardware configuration of the isogeny calculation device 100 of the embodiment. The isogeny calculation device 100 of the embodiment includes a processor 201, a main memory 202, an auxiliary storage device 203, a display device 204, an input device 205, and a communication device 206. The processor 201, the main memory 202, the auxiliary storage device 203, the display device 204, the input device 205, and the communication device 206 are connected together via a bus 210.

The isogeny calculation device 100 may exclude some of the components listed above. For example, when the isogeny calculation device 100 can use an input function and a display function of an external device or devices, the isogeny calculation device 100 need not include the display device 204 and the input device 205.

The processor 201 executes the computer program read from the auxiliary storage device 203 to the main memory 202. The main memory 202 includes memories such as a read-only memory (ROM) and a random-access memory (RAN). The auxiliary storage device 203 includes a hard disk drive (HDD), a memory card, and the like.

The display device 204 is, for example, a liquid crystal display. The input device 205 is an interface for operating the isogeny calculation device 100. The display device 204 and the input device 205 may be implemented by a touch panel or the like having an input function and a display function. The communication device 206 is an interface for communicating with other devices.

For example, the computer program to be executed by the isogeny calculation device 100 is provided as a computer program product by being recorded, as a file having an installable format or an executable format, on a computer-readable storage medium such as a memory card, a hard disk, a compact disc-rewritable (CD-RW), a compact disc read-only memory (CD-ROM), a compact disc-recordable (CD-R), a digital versatile disc-random access memory (DVD-RAM), or a digital versatile disc-recordable (DVD-R).

For example, the computer program to be executed by the isogeny calculation device 100 may be stored on a computer connected to a network such as the Internet, and provided by being downloaded via the network.

For example, the computer program to be executed by the isogeny calculation device 100 may be provided via a network such as the Internet without being downloaded. Specifically, the isogeny calculation process may be executed by what is called an application service provider (ASP) service in which the computer program is not transferred from a server computer, but functions of the process are implemented through execution instructions of the computer program and acquisition of the results of the execution.

The computer program for the isogeny calculation device 100 may be provided by being incorporated into a ROM or the like.

The computer program executed on the isogeny calculation device 100 has a modular configuration including functions that can also be implemented by the computer program among the functional configurations described above. As the actual hardware, the processor 201 reads the computer program from the storage medium and executes it to load the functional blocks described above as the functions into the main memory 202. That is, each of the functional blocks described above is generated in the main memory 202.

One, some, or all of the functions described above may be implemented by hardware such as an integrated circuit (IC), instead of being implemented by software.

A plurality of the processors 201 may be used to implement the functions. In that case, each of the processors 201 may implement one of the functions or two or more of the functions.

While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions. 

What is claimed is:
 1. An isogeny calculation device comprising: a memory configured to store, as a pre-calculated value, an intermediate value, among a plurality of intermediate values used for isogeny calculation, which is determined from an elliptic point T obtained by repeatedly performing L-point multiplication (where L is a positive integer) and M-isogeny (where M is a positive integer) on an elliptic point S serving as a kernel of the isogeny; and an isogeny calculator configured to identify the elliptic point T serving as the kernel of the M-isogeny according to lower e digits (where e is a positive integer) of an L-adic representation of a secret key sk that determines the elliptic point S, read the pre-calculated value determined from the elliptic point T from the memory, and perform at least one of calculations of the L-point multiplication and the M-isogeny by using the pre-calculated value read from the memory.
 2. The device according to claim 1, wherein the isogeny calculator is configured to store an intermediate value K to be used in the calculation of the M-isogeny as the pre-calculated value determined from the elliptic point T, and perform the M-isogeny calculation by using the intermediate value K.
 3. The device according to claim 1, wherein the isogeny calculator is configured to store an intermediate value AC to be used in the calculation of the L-point multiplication as the pre-calculated value determined from the elliptic point T, and perform the L-point multiplication calculation by using the intermediate value AC.
 4. The device according to claim 3, wherein the intermediate value AC corresponds to a coefficient of an elliptic curve mapped by mapping a public elliptic curve including the elliptic point S by the isogeny.
 5. The device according to claim 1, wherein the isogeny calculator is configured to, upon receiving input of the elliptic point S and the lower e digits of the L-adic representation of the secret key sk, perform the M-isogeny calculation of the elliptic point S by using the pre-calculated value determined from the elliptic point T identified by the lower e digits of the L-adic representation of the secret key sk, and calculate an intermediate value or a j-invariant determined from an elliptic curve mapped by mapping a public elliptic curve including the elliptic point S by the isogeny based on the M-isogeny of the elliptic point S.
 6. The device according to claim 1, wherein the isogeny calculator is configured to perform the M-isogeny calculation of a public elliptic point on a public elliptic curve including the elliptic point S by using the pre-calculated value read from the memory, and calculate an elliptic point mapped by mapping the public elliptic point by the isogeny based on the M-isogeny of the public elliptic point.
 7. The device according to claim 6, wherein the pre-calculated value includes an elliptic point obtained by mapping the public elliptic point by L{circumflex over ( )}e-isogeny, and the isogeny calculator is configured to identify the elliptic point T serving as the kernel of the M-isogeny according to the lower e digits of the L-adic representation of the secret key sk, and read the elliptic point obtained by mapping the public elliptic point by the L{circumflex over ( )}e-isogeny, as the intermediate value determined from the elliptic point T.
 8. The device according to claim 1, wherein the isogeny calculator is configured to receive a strategy indicating a tree structure that determines an order of calculation of the L-point multiplication and the M-isogeny calculation and a number of calculations of the L-point multiplication and the M-isogeny, and perform at least one of the M-isogeny calculation and the L-point multiplication calculation based on the strategy.
 9. The device according to claim 1, wherein the isogeny is L{circumflex over ( )}e_L-isogeny (where e_L is a positive integer), the M is L{circumflex over ( )}m (where m is a positive integer), and the elliptic point T is a value taken by performing (e_L−1) times the L-point multiplication and the M-isogeny on the elliptic point S.
 10. The device according to claim 1, wherein the isogeny is L{circumflex over ( )}e_L-isogeny (where e_L is a positive integer), the M is L{circumflex over ( )}m (where m is a positive integer), and the elliptic point T is a value taken by performing the L-point multiplication by (e_L−e) times and the M-isogeny on the elliptic point S.
 11. An isogeny calculation method comprising: by an isogeny calculation device, storing, as a pre-calculated value, an intermediate value, among a plurality of intermediate values used for isogeny calculation, which is determined from an elliptic point T obtained by repeatedly performing L-point multiplication (where L is a positive integer) and M-isogeny (where M is a positive integer) on an elliptic point S serving as a kernel of the isogeny; and by the isogeny calculation device, identifying the elliptic point T serving as the kernel of the M-isogeny according to lower e digits (where e is a positive integer) of an L-adic representation of a secret key sk that determines the elliptic point S, reading the pre-calculated value determined from the elliptic point T from a memory, and performing at least one of calculations of the L-point multiplication and the M-isogeny by using the pre-calculated value read from the memory.
 12. A computer program product comprising a non-transitory computer-readable medium including programmed instructions, the instructions causing a computer to function as: a memory to store, as a pre-calculated value, an intermediate value, among a plurality of intermediate values used for isogeny calculation, which is determined from an elliptic point T obtained by repeatedly performing L-point multiplication (where L is a positive integer) and M-isogeny (where M is a positive integer) on an elliptic point S serving as a kernel of the isogeny; and an isogeny calculator to identify the elliptic point T serving as the kernel of the M-isogeny according to lower e digits (where e is a positive integer) of an L-adic representation of a secret key sk that determines the elliptic point S, read the pre-calculated value determined from the elliptic point T from the memory, and perform at least one of calculations of the L-point multiplication and the M-isogeny by using the pre-calculated value read from the memory. 